/******************************************************************************* * Signavio Core Components * Copyright (C) 2012 Signavio GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package de.hpi.bpmn2_0.factory.node; import org.oryxeditor.server.diagram.generic.GenericShape; import de.hpi.bpmn2_0.annotations.StencilId; import de.hpi.bpmn2_0.exceptions.BpmnConverterException; import de.hpi.bpmn2_0.factory.AbstractShapeFactory; import de.hpi.bpmn2_0.model.BaseElement; import de.hpi.bpmn2_0.model.data_object.DataState; import de.hpi.bpmn2_0.model.data_object.DataStore; import de.hpi.bpmn2_0.model.data_object.DataStoreReference; import de.hpi.diagram.SignavioUUID; /** * Factory for DataStores * * @author Philipp Giese * @author Sven Wagner-Boysen * */ @StencilId("DataStore") public class DataStoreFactory extends AbstractShapeFactory { /* (non-Javadoc) * @see de.hpi.bpmn2_0.factory.AbstractBpmnFactory#createProcessElement(org.oryxeditor.server.diagram.Shape) */ // @Override protected BaseElement createProcessElement(GenericShape shape) throws BpmnConverterException { DataStoreReference dataStoreRef = new DataStoreReference(); this.setCommonAttributes(dataStoreRef, shape); dataStoreRef.setDataStoreRef(new DataStore()); this.setDataStoreRefAttributes(dataStoreRef, shape); return dataStoreRef; } /** * Sets the attributes related to a data store element. * * @param dataStoreRef * The @link {@link DataStoreReference}. * @param shape * The data store {@link GenericShape} */ private void setDataStoreRefAttributes(DataStoreReference dataStoreRef, GenericShape shape) { DataStore dataStore = dataStoreRef.getDataStoreRef(); String dataStateName = shape.getProperty("state"); /* Set attributes of the global data store */ if(dataStore != null) { dataStore.setId(SignavioUUID.generate()); dataStore.setName(shape.getProperty("name")); if(shape.getProperty("capacity") != null && !(shape.getProperty("capacity").length() == 0)) dataStore.setCapacity(Integer.valueOf(shape.getProperty("capacity")).intValue()); /* Set isUnlimited attribute */ String isUnlimited = shape.getProperty("isunlimited"); if(isUnlimited != null && isUnlimited.equalsIgnoreCase("true")) dataStore.setUnlimited(true); else dataStore.setUnlimited(false); /* Define DataState element */ if(dataStateName != null && !(dataStateName.length() == 0)) { DataState dataState = new DataState(dataStateName); dataStore.setDataState(dataState); } } /* Set attributes of the data store reference */ dataStoreRef.setName(shape.getProperty("name")); dataStoreRef.setId(shape.getResourceId()); /* Define DataState element */ if(dataStateName != null && !(dataStateName.length() == 0)) { DataState dataState = new DataState(dataStateName); dataStoreRef.setDataState(dataState); } } }